package com.questetra.bpms.air.model
//package com.questetra.bpms.modeler.model
{
//    import com.questetra.bpms.modeler.command.ChainItem;
//    import com.questetra.bpms.modeler.command.Command;
//    import com.questetra.bpms.modeler.command.CreateProcessDataDefinitionCommand;
//    import com.questetra.bpms.modeler.command.DeleteProcessDataDefinitionCommand;
//    import com.questetra.bpms.modeler.command.EditProcessDataDefinitionCommand;
//    import com.questetra.bpms.modeler.command.NoActionCommand;
//    import com.questetra.bpms.modeler.controller.ProcessModelController;
//    import com.questetra.bpms.modeler.controller.ProcessModelXmlConverter;
//    import com.questetra.bpms.modeler.util.CommonUtils;
//    import com.questetra.bpms.modeler.util.GlobalCommons;
//    import com.questetra.bpms.modeler.util._L;
//    import com.questetra.bpms.modeler.view.IView;

    public class ProcessDataDefinition
//    public class ProcessDataDefinition implements IModel, IProcessDataDetailOwner
    {
        /** データ型の定数定義 */
        //MEMO:データ型追加時対応要
        public static const DATA_TYPE_STRING:int = 0;            /** 文字列型 */
        public static const DATA_TYPE_LONG:int = 1;              /** 整数型 */
//MEMO 実数型は保留
//        public static const DATA_TYPE_DOUBLE:int = 2;            /** 実数型  */
//~~~        public static const DATA_TYPE_SINGLE_SELECT:int = 3;     /** 単一選択型 */
//~~~        public static const DATA_TYPE_MULTIPLE_SELECT:int = 4;   /** 複数選択型 */
        public static const DATA_TYPE_SELECT:int = 11;           /** 選択型 */
        public static const DATA_TYPE_DATE:int = 5;              /** 日付型 */
        public static const DATA_TYPE_DATETIME:int = 10;         /** 日時型 */
        public static const DATA_TYPE_FILE:int = 6;              /** ファイル型 */
        public static const DATA_TYPE_CURRENCY:int = 7;          /** 通貨型 */
        public static const DATA_TYPE_QUSER:int = 8;             /** ユーザ型 */
        public static const DATA_TYPE_DISCUSSION:int = 9;        /** 掲示板型 */
        public static const DATA_TYPE_DECIMAL:int = 12;          /** 数値型 */
        public static const DATA_TYPE_LIST:int = 13;             /** リスト型 */
        public static const DATA_TYPE_NEW_FILE:int = 14;         /** 新ファイル型 */
        public static const DATA_TYPE_HTML_PANEL:int = 15;       /** HTMLパネル */

        public static const DATA_SUB_TYPE_DATE_YMD:Number = 0;      /** 日付型　年月日 */
        public static const DATA_SUB_TYPE_DATE_YM:Number = 1;       /** 日付型　年月 */
        public static const DATA_SUB_TYPE_DATE_MD:Number = 2;       /** 日付型　月日 */
        public static const DATA_SUB_TYPE_DATE_Y:Number = 3;        /** 日付型　年 */
        public static const DATA_SUB_TYPE_CURRENCY_YEN:Number = 4;      /** 通貨型　円 */
        public static const DATA_SUB_TYPE_CURRENCY_DOLLAR:Number = 5;   /** 通貨型　ドル */
        public static const DATA_SUB_TYPE_CURRENCY_EURO:Number = 6;     /** 通貨型　ユーロ */

        public static const DATA_FORM_TYPE_TEXTFIELD:Number = 0;    /** テキストフィールド */
        public static const DATA_FORM_TYPE_TEXTAREA:Number = 1;     /** テキストエリア */
        public static const DATA_FORM_TYPE_RADIO:Number = 2;        /** ラジオボタン */
        public static const DATA_FORM_TYPE_CHECKBOX:Number = 3;     /** チェックボックス */
        public static const DATA_FORM_TYPE_SELECT:Number = 4;       /** セレクトボックス */
        public static const DATA_FORM_TYPE_SELECT_SEARCH:Number = 5;    /** 検索セレクトボックス */

//        /** データ追加時のsubType・formType仮番号 */
//        public static const DEFAULT_TYPE_VALUE:Number = -1;
//
//        /** 単一・複数選択型の設定画面でのセパレータ */
//        public static const SELECT_ITEM_SEPARATOR:String = ",";
//
//        /** 選択肢指定がデータ指定でない場合のデータのid */
//        public static const UNSELECTED_DATA_ID:Number = -1;
//
//        /** 固定表示データ向け定数 */
//        public static const TITLE_DATA_NUMBER:Number = -2;
//        public static const TITLE_DATA_VIEW_ORDER:Number = 0;
//            //表示順に並べて表示されるので1より小さい値でないとだめ
//        /** 埋め込みコマンド向けおよびDSパラメータ向け定数 */
//        public static const PROCESS_START_USER_NAME_DATA_NUMBER:Number = -3;
//        public static const PROCESS_START_GROUP_NAME_DATA_NUMBER:Number = -4;
//        public static const PROCESS_INSTANCE_ID_DATA_NUMBER:Number = -5;
//        public static const DS_RECEIVE_UNSELECT_DATA_NUMBER:Number = -6;  //DS向けエラー受信データ選択における未選択状態を示すもの
//
//        /** 必須／任意の文字列定義 **/
//        public static const VALIDATION_MUST_STRING:String = _L('dataDefinition.validationMust');
//        public static const VALIDATION_MUST_NOT_STRING:String = _L('dataDefinition.validationNotMust');
//        
//        /** 日付／日時型の初期値設定用文字列 */
//        public static const INIT_VALUE_DATE_LABEL_LIST:Array /* of String */ = [
//            "", //_L('dataDefinition.init.none'),
//            _L('dataDefinition.init.date.processInstanceStart')
//        ];
//        public static const INIT_VALUE_DATE_VALUE_LIST:Array /* of String */ = [
//            "",
//            "${processInstance.startDatetime}"
//        ];
//        
//        /** ユーザ型の初期値設定用文字列 */
//        public static const INIT_VALUE_USER_LABEL_LIST:Array /* of String */ = [
//            "",
//            _L('dataDefinition.init.quser.processInitQuser')
//        ];
//        public static const INIT_VALUE_USER_VALUE_LIST:Array /* of String */ = [
//            "",
//            "${processInstance.initQuserId}"
//        ];
//
//        /** 選択肢の持ち方の種別 */
//        public static const SELECT_ITEM_TYPE_ITEM_LIST:int = 0;
//        public static const SELECT_ITEM_TYPE_PROCESS_DATA:int = 1;
//        public static const SELECT_ITEM_TYPE_HTTP:int = 2;
//        public static const SELECT_ITEM_TYPE_QUSER:int = 3;
//        
//        private var _id:Number;
//        private var _processDataDefinitionNumber:Number;
//        private var _processModelId:Number;
//        private var _processModelNumber:Number;
//        private var _processModelVersion:Number;
//        private var _name:String;
//        private var _dataType:int;
//        private var _note:String;
//        private var _subType:Number = DEFAULT_TYPE_VALUE;
//        private var _formType:Number = DEFAULT_TYPE_VALUE;
//        private var _initValue:String;
//        private var _activated:Boolean = false;
//        private var _columns:int = 1;
//        private var _description:String = "";
//        
//        // 各型ごとの詳細
//        private var _stringDetail:ProcessDataStringDetail = new ProcessDataStringDetail(); // 文字型向け詳細
//        private var _decimalDetail:ProcessDataDecimalDetail = new ProcessDataDecimalDetail(); // 数値型向け詳細
//        private var _basicDetail:ProcessDataBasicDetail = new ProcessDataBasicDetail(); // 基本型向け詳細
//        private var _selectItemsDetail:ProcessDataSelectItemsDetail = new ProcessDataSelectItemsDetail(); // 選択型向け(通常)詳細
//        private var _selectProcessDataDetail:ProcessDataSelectProcessDataDetail = new ProcessDataSelectProcessDataDetail(); // 選択型向け(データ指定)詳細
//        private var _selectHttpDetail:ProcessDataSelectHttpDetail = new ProcessDataSelectHttpDetail(); // 選択型向け(HTTP指定)詳細
//        private var _listSubDataDefinitions:Array /* of ProcessDataListSubDataDefinition */ = []; // リスト型向け詳細
//        //validation向けモデル
//        private var _conditionDataRuleList:Array /* of ConditionDataRule */ = new Array();
//        //選択型向けモデル
//        private var _selectItemType:int = SELECT_ITEM_TYPE_ITEM_LIST;
////~~~        private var _selectItemList:Array /* of SelectItem */ = new Array();
//        //※各xpath式の初期値
//        public static const SELECT_ITEM_HTTP_ITEM_XPATH_DEFAULT:String = "/items/item";
//        public static const SELECT_ITEM_HTTP_VALUE_XPATH_DEFAULT:String = "/*/@value";
//        public static const SELECT_ITEM_HTTP_DISPLAY_XPATH_DEFAULT:String = "/*/@display";
//        private var _selectItemDataId:Number = UNSELECTED_DATA_ID;
//        private var _viewOrder:Number;
//
//        /**
//         * アクセシビリティ設定の編集し忘れしているかどうかを表すフラグ
//         * ノードやデータ追加時に設定して、プロセスモデル保存時に参照する
//         */
//        private var _isForgetSettingAccessibility:Boolean = false;
//        public function get isForgetSettingAccessibility():Boolean
//        {
//            return _isForgetSettingAccessibility;
//        }
//        public function set isForgetSettingAccessibility(value:Boolean):void
//        {
//            _isForgetSettingAccessibility = value;
//        }
//
//        /**
//        * 固定表示するデータ（title）の仮のデータ定義（埋め込みコマンドでも利用）
//        */
//        public static function getTitleDataDefinition():ProcessDataDefinition
//        {
//            var dataDefinition:ProcessDataDefinition = new ProcessDataDefinition();
//            dataDefinition.processDataDefinitionNumber = ProcessDataDefinition.TITLE_DATA_NUMBER;
//            dataDefinition.activated = true;
//            dataDefinition.viewOrder = ProcessDataDefinition.TITLE_DATA_VIEW_ORDER;
//            dataDefinition.name = _L('dataDefinition.titleData.name');
//            dataDefinition.dataType = ProcessDataDefinition.DATA_TYPE_STRING;
//            dataDefinition.formType = ProcessDataDefinition.DATA_FORM_TYPE_TEXTFIELD;
//            dataDefinition.note = "";
//            dataDefinition.initValue = ProcessModelController.getInstance().processModel.initTitle;
//            dataDefinition.columns = ProcessModelController.getInstance().processModel.titleColumns;
//            dataDefinition.description = ProcessModelController.getInstance().processModel.titleDescription;
//        
//            return dataDefinition;
//        }
//        /**
//        * 埋め込みコマンド向けデータの仮のデータ定義
//        */
//        public static function getProcessStartUserNameDataDefinition():ProcessDataDefinition
//        {
//            var dataDefinition:ProcessDataDefinition = new ProcessDataDefinition();
//            dataDefinition.processDataDefinitionNumber = ProcessDataDefinition.PROCESS_START_USER_NAME_DATA_NUMBER;
//            dataDefinition.name = _L('dataDefinition.processStartUser');
//            dataDefinition.dataType = ProcessDataDefinition.DATA_TYPE_STRING;
//            dataDefinition.formType = ProcessDataDefinition.DATA_FORM_TYPE_TEXTFIELD;
//
//            return dataDefinition;
//        }
//        public static function getProcessStartGroupNameDataDefinition():ProcessDataDefinition
//        {
//            var dataDefinition:ProcessDataDefinition = new ProcessDataDefinition();
//            dataDefinition.processDataDefinitionNumber = ProcessDataDefinition.PROCESS_START_GROUP_NAME_DATA_NUMBER;
//            dataDefinition.name = _L('dataDefinition.processStartGroup.name');
//            dataDefinition.dataType = ProcessDataDefinition.DATA_TYPE_STRING;
//            dataDefinition.formType = ProcessDataDefinition.DATA_FORM_TYPE_TEXTFIELD;
//
//            return dataDefinition;
//        }
//        public static function getProcessInstanceIdDataDefinition():ProcessDataDefinition
//        {
//            var dataDefinition:ProcessDataDefinition = new ProcessDataDefinition();
//            dataDefinition.processDataDefinitionNumber = ProcessDataDefinition.PROCESS_INSTANCE_ID_DATA_NUMBER;
//            dataDefinition.name = _L('dataDefinition.processInstanseId');
//            dataDefinition.dataType = ProcessDataDefinition.DATA_TYPE_LONG;
//
//            return dataDefinition;
//        }
//        public static function getDsErrorReceiveUnselectDataDefinition():ProcessDataDefinition
//        {
//            var dataDefinition:ProcessDataDefinition = new ProcessDataDefinition();
//            dataDefinition.processDataDefinitionNumber = ProcessDataDefinition.DS_RECEIVE_UNSELECT_DATA_NUMBER;
//            dataDefinition.name = "";
//            dataDefinition.dataType = ProcessDataDefinition.DEFAULT_TYPE_VALUE;
//
//            return dataDefinition;
//        }
//
//
//        public function ProcessDataDefinition()
//        {
//        }
//        
//        /**
//        * クローン（別オブジェクトでプロパティを全部コピーしたもの）を返す
//        */
//        public static function getClone(original:ProcessDataDefinition):ProcessDataDefinition
//        {
//            var copy:ProcessDataDefinition = ProcessDataDefinition(CommonUtils.getClone(original));
//            
//            // 各Detailのコピーをとる
//            var copyStringDetail:ProcessDataStringDetail = new ProcessDataStringDetail();
//            ProcessDataDetail.copy(original.stringDetail, copyStringDetail);
//            copy.stringDetail = copyStringDetail;
//            var copyDecimalDetail:ProcessDataDecimalDetail = new ProcessDataDecimalDetail();
//            ProcessDataDetail.copy(original.decimalDetail, copyDecimalDetail);
//            copy.decimalDetail = copyDecimalDetail;
//            var copyBasicDetail:ProcessDataBasicDetail = new ProcessDataBasicDetail();
//            ProcessDataDetail.copy(original.basicDetail, copyBasicDetail);
//            copy.basicDetail = copyBasicDetail;
//            var copySelectItemsDetail:ProcessDataSelectItemsDetail = new ProcessDataSelectItemsDetail();
//            ProcessDataDetail.copy(original.selectItemsDetail, copySelectItemsDetail);
//            copy.selectItemsDetail = copySelectItemsDetail;
//            var copySelectProcessDataDetail:ProcessDataSelectProcessDataDetail = new ProcessDataSelectProcessDataDetail();
//            ProcessDataDetail.copy(original.selectProcessDataDetail, copySelectProcessDataDetail);
//            copy.selectProcessDataDetail = copySelectProcessDataDetail;
//            var copySelectHttpDetail:ProcessDataSelectHttpDetail = new ProcessDataSelectHttpDetail();
//            ProcessDataDetail.copy(original.selectHttpDetail, copySelectHttpDetail);
//            copy.selectHttpDetail = copySelectHttpDetail;
//
//            //※配列はそのままだと参照先が書き変えられるのでコピーして保存、解放できないオブジェクトが増えすぎる？
//            copy.conditionDataRuleList = ConditionDataRule.getListClone(original.conditionDataRuleList);
//
//            return copy;
//        }
//
//        public function xmlToObject(xml:XML, processModel:ProcessModel):void
//        {
//            this._id = xml.@id;
//            this._processDataDefinitionNumber = xml.@number;
//            this._processModelId = processModel.id;
//            this._processModelNumber = processModel.processModelNumber;
//            this._processModelVersion = processModel.version;
//            this._name = xml.name;
//            this._dataType = xml["data-type"];
//            this._note = ProcessModelXmlConverter.uncapsuleByCdata(xml.note.toString());
//            if (xml.hasOwnProperty("activated"))
//            {
//                if (xml["activated"].toString() == "true")
//                {
//                    this._activated = true;
//                }
//            }
//            if (xml.hasOwnProperty("columns"))
//            {
//                this.columns = int(xml["columns"]);
//            }
//            if (xml.hasOwnProperty("description"))
//            {
//                this.description = ProcessModelXmlConverter.uncapsuleByCdata(xml.description.toString());
//            }
//            
//            if (xml.hasOwnProperty("sub-type") == true)
//            {
//                this._subType = xml["sub-type"];
//            }
//            if (xml.hasOwnProperty("form-type") == true)
//            {
//                this._formType = xml["form-type"];
//            }
//            if (xml.hasOwnProperty("validation") == true)
//            {
//                var validationXml:XML = 
//                    new XML(ProcessModelXmlConverter.uncapsuleByCdata(xml.validation.toString()));
//                if (validationXml.name().toString() == "condition")
//                {
//                    this._conditionDataRuleList =
//                        ConditionDataRule.conditionXmlToConditionDataRuleList(validationXml, processModel);
//                }
//            }
//
//            //選択肢部分の処理
//            // 文字型・日付型・日時型・ユーザ型・数値型・新ファイル型の場合
//            if ((this.dataType == ProcessDataDefinition.DATA_TYPE_STRING)
//                || (this._dataType == ProcessDataDefinition.DATA_TYPE_DATE)
//                || (this._dataType == ProcessDataDefinition.DATA_TYPE_DATETIME)
//                || (this._dataType == ProcessDataDefinition.DATA_TYPE_QUSER)
//                || (this._dataType == ProcessDataDefinition.DATA_TYPE_DECIMAL)
//                || (this._dataType == ProcessDataDefinition.DATA_TYPE_NEW_FILE))
//            {
//                this.detail.xmlToObject(xml);
//            }
//            
//            //選択型の場合
//            else if (this._dataType == DATA_TYPE_SELECT)
//            {
//                var childrenXML:XMLList = xml.children();
//                var childXML:XML;
//                var ns:Namespace;
//                for each (childXML in childrenXML)
//                {
//                    //選択肢指定の場合
//                    if (childXML.localName() == "select-detail")
//                    {
//                        this.selectItemType = SELECT_ITEM_TYPE_ITEM_LIST;
//                        this.detail.xmlToObject(xml);
//                    }
//                    //文字データ指定の場合
//                    else if (childXML.localName() == "process-data-select-detail")
//                    {
//                        this.selectItemType = SELECT_ITEM_TYPE_PROCESS_DATA;
//                        this.detail.xmlToObject(xml);
//                    }
//                    //HTTP指定の場合
//                    else if (childXML.localName() == "http-select-detail")
//                    {
//                        this.selectItemType = SELECT_ITEM_TYPE_HTTP;
//                        this.detail.xmlToObject(xml);
//                    }
//                    //Quser指定の場合
//                    else if (childXML.localName() == "quser-select-detail")
//                    {
//                        this.selectItemType = SELECT_ITEM_TYPE_QUSER;
//                        ns = childXML.namespace();
//                        this.conditionDataRuleList = xmlToConditionDataRuleObjectForSelect(childXML, ns);
//                    }
//                }
//            }
//            
//            if (this._dataType == ProcessDataDefinition.DATA_TYPE_LIST)
//            {
//                _listSubDataDefinitions = [];
//                var detailNs:Namespace = ProcessDataDetail.DATA_DETAIL_NS;
//                for each (var subDataXml:XML in xml.detailNs::["list-detail"].detailNs::["sub-data-defs"].detailNs::["sub-data-def"])
//                {
//                    var listSubDataDefinition:ProcessDataListSubDataDefinition = new ProcessDataListSubDataDefinition();
//                    listSubDataDefinition.xmlToObject(subDataXml);
//                    _listSubDataDefinitions.push(listSubDataDefinition);
//                }
//            }
//
//            this._viewOrder = xml["view-order"];
//            // リスト型の場合、モデラー内部での表示順は0とする。
//            if (this.dataType == ProcessDataDefinition.DATA_TYPE_LIST)
//            {
//                this.viewOrder = 0;
//            }
//            this.initValue = xml["init-value"];
//        }
//        private function xmlToConditionDataRuleObjectForSelect(childXML:XML,
//                                                                    ns:Namespace):Array /* of ConditionDataRule */
//        {
//            var dataRuleList:Array /* of ConditionDataRule */ = [];
//
//            if (childXML.ns::["required"] == "true")
//            {
//                var dataRuleRequired:ConditionDataRule =
//                    ConditionDataRule.getNewConditionDataRuleByString(
//                        "",
//                        ProcessModel.OPERATOR_EXIST,
//                        this.id);
//                dataRuleList.push(dataRuleRequired);
//            }
//            if ((childXML.ns::["min-selects"].toString() != "") &&
//                (isNaN(Number(childXML.ns::["min-selects"])) == false))
//            {
//                var dataRuleMinSelects:ConditionDataRule =
//                    ConditionDataRule.getNewConditionDataRuleByString(
//                        childXML.ns::["min-selects"],
//                        ProcessModel.OPERATOR_SELECTS_MORE_EQUAL,
//                        this.id);
//                dataRuleList.push(dataRuleMinSelects);
//            }
//            if ((childXML.ns::["max-selects"].toString() != "") &&
//                (isNaN(Number(childXML.ns::["max-selects"])) == false))
//            {
//                var dataRuleMaxSelects:ConditionDataRule =
//                    ConditionDataRule.getNewConditionDataRuleByString(
//                        childXML.ns::["max-selects"],
//                        ProcessModel.OPERATOR_SELECTS_LESS_EQUAL,
//                        this.id);
//                dataRuleList.push(dataRuleMaxSelects);
//            }
//
//            return dataRuleList;
//        }
//
//        public function getCommand(commandType:String, argObj:Object):Command
//        {
//            switch (commandType)
//            {
//            case Command.CREATE :
//                var createProcessDataDefinitionCommand:CreateProcessDataDefinitionCommand =
//                    new CreateProcessDataDefinitionCommand();
//                createProcessDataDefinitionCommand.processData = this;
//                return createProcessDataDefinitionCommand;
//
//            case Command.EDIT :
//                var editProcessDataDefinitionCommand:EditProcessDataDefinitionCommand =
//                    new EditProcessDataDefinitionCommand();
//                editProcessDataDefinitionCommand.processData = this;
//                return editProcessDataDefinitionCommand;
//
//            case Command.DELETE :
//                var deleteProcessDataDefinitionCommand:DeleteProcessDataDefinitionCommand =
//                    new DeleteProcessDataDefinitionCommand();
//                deleteProcessDataDefinitionCommand.processData = this;
//                return deleteProcessDataDefinitionCommand;
//
//            default :
//                return new NoActionCommand();
//            }
//        }
//
//        public function createEmptyView():IView
//        {
//            return null;
//        }
//
//        public function get modelType():String
//        {
//            return ProcessModel.OTHER_MODEL;
//        }
//
//        /**
//         * プロセスデータ定義向けにデフォルトで作成されるオブジェクトを返す 
//         * @return
//         */
//        public static function getNewProcessDataDefinition(viewOrder:Number):ProcessDataDefinition
//        {
//            var processDataDefinition:ProcessDataDefinition = new ProcessDataDefinition();
//            processDataDefinition.id = new ProcessModelManager().getNewProcessDataDefinitionId();
//            processDataDefinition.name = _L('defaultName.dataDefinition') + processDataDefinition.id.toString();  //仮の名前
//            processDataDefinition.dataType = ProcessDataDefinition.DATA_TYPE_STRING;
//            processDataDefinition.formType = ProcessDataDefinition.DATA_FORM_TYPE_TEXTFIELD;
//            processDataDefinition.note = ""
//            processDataDefinition.viewOrder = viewOrder;
//            //もし必須入力が固定の型がデフォルトになったら有効にしないといけない
////            ProcessDataDefinitionHelper.setValidationMustConditionDataRule(
////                processDataDefinition, ProcessDataDefinitionHelper.isValidationMustOnly(processDataDefinition));
//            return processDataDefinition;
//        }
//
//        /**
//         * プロセスデータ定義追加時に全てのアクティビティ用のアクセシビリティの設定を追加する 
//         * @param
//         */
//        public function createAccessibility(chain:Array /* of ChainItem */):void
//        {
//            var model:ProcessModel = ProcessModelController.getInstance().processModel;
//            //accessibilityIdはこの処理内ではgetNewAccessibilityId()の返り値がインクリメントされないのでカウンタiで管理
//            var accessibilityId:Number = new ProcessModelManager().getNewAccessibilityId();
//            var i:Number = 0;
//            for each (var node:Node in model.nodeList)
//            {
//                if(node.doesNeedAccessibilities)
//                {
//                    var accessibility:ProcessDataAccessibility = new ProcessDataAccessibility();
//                    accessibility.id = accessibilityId + i;
//                    accessibility.nodeId = node.id;
//                    accessibility.processDataDefinitionId = this.id;
//                    if (node.nodeType == Node.NODE_TYPE_ACTIVITY)
//                    {
//                        accessibility.accessibility = ProcessDataAccessibility.ACCESSIBILITY_R;
//                    }
//                    else
//                    {
//                        accessibility.accessibility = ProcessDataAccessibility.ACCESSIBILITY_NO;
//                    }
//                    node.accessibilityList.push(accessibility);
//
//                    var chainItem:ChainItem = new ChainItem();
//                    chainItem.target = accessibility;
//                    chainItem.commandType = ChainItem.CREATE;
//                    chain.push(chainItem);
//
//                    i = i + 1;
//                }
//            }
//        }
//        /**
//         * プロセスデータ定義削除時に全てのアクティビティ用のアクセシビリティの設定を削除する 
//         * @param chain
//         * @param id 削除するプロセスデータid
//         */
//        public function deleteAccessibility(chain:Array /* of ChainItem */, id:Number):void
//        {
//            var model:ProcessModel = ProcessModelController.getInstance().processModel;
//            for each (var node:Node in model.nodeList)
//            {
//                if(node.doesNeedAccessibilities)
//                {
//                    var accessibilityList:Array /* of ProcessDataAccessibility */ =
//                        node.accessibilityList;
//                    var copyAccessibilities:Array /* of ProcessDataAccessibility */ =
//                        CommonUtils.copyArray(accessibilityList);
//                    for each (var accessibility:ProcessDataAccessibility in copyAccessibilities)
//                    {
//                        if (accessibility.processDataDefinitionId == id)
//                        {
//                            CommonUtils.removeFromArray(accessibility, accessibilityList);
//
//                            var chainItem:ChainItem = new ChainItem();
//                            chainItem.target = accessibility;
//                            chainItem.commandType = ChainItem.DELETE;
//                            chain.push(chainItem);
//                        }
//                    }
//                }
//            }
//        }
//        
//        public function get detail():ProcessDataDetail
//        {
//            return ProcessDataDefinitionHelper.getProcessDetaDetail(this);
//        }
//
//        public function get id():Number
//        {
//            return _id;
//        }
//        public function set id(value:Number):void
//        {
//            _id = value;
//        }
//        
//        public function get processDataDefinitionNumber():Number
//        {
//            return _processDataDefinitionNumber;
//        }
//        public function set processDataDefinitionNumber(value:Number):void
//        {
//            _processDataDefinitionNumber = value;
//        }        
//
//        public function get processModelId():Number
//        {
//            return _processModelId;
//        }
//        public function set processModelId(value:Number):void
//        {
//            _processModelId = value;
//        }
//        
//        public function get processModelNumber():Number
//        {
//            return _processModelNumber;
//        }
//        public function set processModelNumber(value:Number):void
//        {
//            _processModelNumber = value;
//        }        
//                
//        public function get processModelVersion():Number
//        {
//            return _processModelVersion;
//        }
//        public function set processModelVersion(value:Number):void
//        {
//            _processModelVersion = value;
//        }
//        
//        public function get dataType():int
//        {
//            return _dataType;
//        }
//        public function set dataType(value:int):void
//        {
//            _dataType = value;
//        }
//        
//        public function get name():String
//        {
//            return _name;
//        }
//        public function set name(value:String):void
//        {
//            _name = value;
//        }
//
//        public function get note():String
//        {
//            return _note;
//        }
//        public function set note(value:String):void
//        {
//            _note = value;
//        }
//
//        public function get subType():Number
//        {
//            return _subType;
//        }
//        public function set subType(value:Number):void
//        {
//            _subType = value;
//        }
//
//        public function get formType():Number
//        {
//            return _formType;
//        }
//        public function set formType(value:Number):void
//        {
//            _formType = value;
//        }
//
//        public function get conditionDataRuleList():Array /* of ConditionDataRule */
//        {
//            return _conditionDataRuleList;
//        }
//        public function set conditionDataRuleList(value:Array /* of ConditionDataRule */):void
//        {
//            _conditionDataRuleList = value;
//        }
//        
//        public function get selectItemType():int
//        {
//            return _selectItemType;
//        }
//        public function set selectItemType(value:int):void
//        {
//            _selectItemType = value;
//        }
//
//        public function get viewOrder():Number
//        {
//            return _viewOrder;
//        }
//        public function set viewOrder(value:Number):void
//        {
//            _viewOrder = value;
//        }
//        public function get initValue():String
//        {
//            return _initValue;
//        }
//        public function set initValue(value:String):void
//        {
//            _initValue = value;
//        }
//        public function get activated():Boolean
//        {
//            return _activated;
//        }
//        public function set activated(value:Boolean):void
//        {
//            _activated = value;
//        }
//        public function get columns():int
//        {
//            return _columns; 
//        }
//        public function set columns(value:int):void
//        {
//            _columns = value;
//        }
//        public function get description():String
//        {
//            return _description;
//        }
//        public function set description(value:String):void
//        {
//            _description = value;
//        }
//        
//        public function get stringDetail():ProcessDataStringDetail
//        {
//            return _stringDetail;
//        }
//        public function set stringDetail(value:ProcessDataStringDetail):void
//        {
//            _stringDetail = value;
//        }
//        public function get decimalDetail():ProcessDataDecimalDetail
//        {
//            return _decimalDetail;
//        }
//        public function set decimalDetail(value:ProcessDataDecimalDetail):void
//        {
//            _decimalDetail = value;
//        }
//        
//        public function get basicDetail():ProcessDataBasicDetail
//        {
//            return _basicDetail;
//        }
//        public function set basicDetail(value:ProcessDataBasicDetail):void
//        {
//            _basicDetail = value;
//        }
//        
//        public function get selectItemsDetail():ProcessDataSelectItemsDetail
//        {
//            return _selectItemsDetail;
//        }
//        public function set selectItemsDetail(value:ProcessDataSelectItemsDetail):void
//        {
//            _selectItemsDetail = value;
//        }
//        
//        public function get selectProcessDataDetail():ProcessDataSelectProcessDataDetail
//        {
//            return _selectProcessDataDetail;
//        }
//        public function set selectProcessDataDetail(value:ProcessDataSelectProcessDataDetail):void
//        {
//            _selectProcessDataDetail = value;
//        }
//        
//        public function get selectHttpDetail():ProcessDataSelectHttpDetail
//        {
//            return _selectHttpDetail;
//        }
//        public function set selectHttpDetail(value:ProcessDataSelectHttpDetail):void
//        {
//            _selectHttpDetail = value;
//        }
//        
//        public function get listSubDataDefinitions():Array /* of ProcessDataListSubDataDefinition */
//        {
//            return _listSubDataDefinitions;
//        }
//        public function set listSubDataDefinitions(value:Array /* of ProcessDataListSubDataDefinition */):void
//        {
//            _listSubDataDefinitions = value;
//        }
//        
//        public function toXml():XML
//        {
//            var xml:XML = 
//                <process-data-definition>
//                  <activated>{_activated}</activated>
//                  <name>{_name}</name>
//                  <data-type>{_dataType}</data-type>
//                  <note/>
//                  <columns>{_columns}</columns>
//                  <description />
//                </process-data-definition>
//            xml.@id = _id;
//            xml.@number = _processDataDefinitionNumber;
//            if (_subType != DEFAULT_TYPE_VALUE)
//            {
//                xml.appendChild(new XML(<sub-type/>));
//                xml["sub-type"].appendChild(_subType);
//            }
//            if (_formType != DEFAULT_TYPE_VALUE)
//            {
//                xml.appendChild(new XML(<form-type/>));
//                xml["form-type"].appendChild(_formType);
//            }
//            
//            // リスト型の表示順は最後にする
//            if (_dataType != ProcessDataDefinition.DATA_TYPE_LIST)
//            {
//                xml.appendChild(<view-order>{_viewOrder}</view-order>);
//            }
//            else
//            {
//                xml.appendChild(<view-order>{GlobalCommons.NUMBER_MAX_VALUE}</view-order>);
//            }
//            
//            //CDATAセクション対応の要素を追加する
//            ProcessDataDefinitionHelper.toXmlHelper(xml, this);
//            if ((_note != null) && (_note != ""))
//            {
//                xml.note.appendChild(new XML(ProcessModelXmlConverter.capsuleByCdata(_note)));
//            }
//            
//            if ((_description != null) && (_description.length > 0))
//            {
//                xml.description.appendChild(new XML(ProcessModelXmlConverter.capsuleByCdata(_description)));
//            }
//            
//            if ((_initValue != null) && (_initValue != ""))
//            {
//                xml.appendChild(<init-value>{_initValue}</init-value>);
//            }
//            
//            // 文字型・数値型・日付型・日時型・ユーザ型の場合は詳細が追加される
//            if ((_dataType == ProcessDataDefinition.DATA_TYPE_STRING)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_DATE)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_DATETIME)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_QUSER)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_DECIMAL)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_NEW_FILE)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_SELECT && _selectItemType == ProcessDataDefinition.SELECT_ITEM_TYPE_ITEM_LIST)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_SELECT && _selectItemType == ProcessDataDefinition.SELECT_ITEM_TYPE_PROCESS_DATA)
//                || (_dataType == ProcessDataDefinition.DATA_TYPE_SELECT && _selectItemType == ProcessDataDefinition.SELECT_ITEM_TYPE_HTTP))
//            {
//                xml.appendChild(this.detail.toXml());
//            }
//            
//            // リスト型の場合は、各ListSubDataの要素リストが追加される
//            if (_dataType == ProcessDataDefinition.DATA_TYPE_LIST)
//            {
//                var listXml:XML = <list-detail />;
//                listXml.setNamespace(ProcessDataDetail.DATA_DETAIL_NS);
//                var listSubDatasXml:XML = <sub-data-defs />;
//                for each(var listSubData:ProcessDataListSubDataDefinition in _listSubDataDefinitions)
//                {
//                    listSubDatasXml.appendChild(listSubData.toXml());
//                }
//                listXml.appendChild(listSubDatasXml);
//                xml.appendChild(listXml);
//            }
//            
//            return xml;
//        }
    }
}